package santeclair.referentiel.webservice.rest.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import santeclair.referentiel.bean.Departement;
import santeclair.referentiel.dto.DepartementDto;
import santeclair.referentiel.service.DepartementService;
import santeclair.referentiel.webservice.DepartementWebService;

import com.google.common.annotations.VisibleForTesting;

@Service("departementWebService")
public class DepartementWebServiceImpl implements DepartementWebService {

    @Autowired
    @Qualifier("departementService")
    private DepartementService departementService;

    @Override
    public List<DepartementDto> listerDepartements() {
        List<DepartementDto> result = new ArrayList<DepartementDto>();
        for (Departement departement : departementService.findAllDepartement()) {
            DepartementDto dto = new DepartementDto();
            dto.setCode(departement.getCode());
            dto.setLibelle(departement.getLibelle());
            result.add(dto);
        }
        return result;
    }

    @Override
    public List<DepartementDto> listerDepartementsFrancais() {
        List<DepartementDto> result = new ArrayList<DepartementDto>();
        for (Departement departement : departementService.findAllDepartementFrancais()) {
            DepartementDto dto = new DepartementDto();
            dto.setCode(departement.getCode());
            dto.setLibelle(departement.getLibelle());
            result.add(dto);
        }
        return result;
    }

    /* ======================================================= *
     *                      getters & setters 
     * ======================================================= */

    /**
     * @param departementService the departementService to set
     */
    @VisibleForTesting
    public void setDepartementService(DepartementService departementService) {
        this.departementService = departementService;
    }

}
